home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / C / Screens / ManyScreens.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-02  |  2.6 KB  |  94 lines

  1. /* Dice: 1> dcc -l0 -mD dpk.o ManyScreens.c -o ManyScreens
  2. **
  3. ** This demo shows how multiple screens can be initialised in your program.
  4. ** The most important thing is that you do not refer to old objects when
  5. ** initialising new or duplicate objects.  This is why we keep two variables,
  6. ** Screen1 and Screen2, to prevent any mistakes.
  7. **
  8. ** In this version a screen is shown, removed, then a second screen is shown
  9. ** and removed.
  10. */
  11.  
  12. #include <proto/dpkernel.h>
  13. #include <clib/colours_protos.h>
  14.  
  15. BYTE *ProgName      = "Multiple Screens V1";
  16. BYTE *ProgAuthor    = "Paul Manias";
  17. BYTE *ProgDate      = "August 1998";
  18. BYTE *ProgCopyright = "DreamWorld Productions (c) 1996-1998.  Freely distributable.";
  19. BYTE *ProgShort     = "Multiple Screens Demonstration.";
  20.  
  21. struct GScreen *Screen1    = NULL;
  22. struct GScreen *Screen2    = NULL;
  23. struct JoyData *joydata    = NULL;
  24. struct Picture *background = NULL;
  25. struct Picture *Logo       = NULL;
  26.  
  27. struct FileName BackFile = { ID_FILENAME, "GMS:demos/data/PIC.Green" };
  28. struct FileName PicFile  = { ID_FILENAME, "GMSDev:Logos/GMSLogo-FullScreen.iff" };
  29.  
  30. void Demo(void);
  31.  
  32. /***************************************************************************/
  33.  
  34. void main(void) {
  35.   if (background = Load(&BackFile, ID_PICTURE)) {
  36.    if (Screen1 = Get(ID_SCREEN)) {
  37.       CopyStructure(background, Screen1);
  38.       Screen1->Attrib  = SCR_DBLBUFFER;
  39.  
  40.     if (Init(Screen1,NULL)) {
  41.  
  42.      if (Copy(background->Bitmap,Screen1->Bitmap) IS ERR_OK) {
  43.         CopyBuffer(Screen1,BUFFER2,BUFFER1);
  44.  
  45.         Free(background);
  46.         background = NULL;
  47.  
  48.         if (joydata = Get(ID_JOYDATA)) {
  49.  
  50.            if (Init(joydata, NULL)) {
  51.               Display(Screen1); 
  52.  
  53.               do
  54.               {
  55.                 Query(joydata);
  56.               } while (!(joydata->Buttons & JD_LMB));
  57.            }
  58.  
  59.            Free(Screen1);
  60.            Screen1 = NULL;
  61.  
  62.            if (Logo = Load(&PicFile, ID_PICTURE)) {
  63.               if (Screen2 = Get(ID_SCREEN)) {
  64.                  CopyStructure(Logo, Screen2);
  65.                  if (Init(Screen2,NULL)) {
  66.                     if (Copy(Logo->Bitmap,Screen2->Bitmap) IS ERR_OK) {
  67.                        Free(Logo);
  68.                        Logo = NULL;
  69.  
  70.                        Display(Screen2);
  71.                        do {
  72.                           Query(joydata);
  73.                        } while (!(joydata->Buttons & JD_LMB));
  74.                     }
  75.                  }
  76.                  Free(Screen2);
  77.                  Screen2 = NULL;
  78.               }
  79.               Free(Logo);
  80.               Logo = NULL;
  81.            }
  82.         }
  83.      }
  84.     }
  85.    }
  86.   }
  87.   Free(Screen1);
  88.   Free(Screen2);
  89.   Free(Logo);
  90.   Free(joydata);
  91.   Free(background);
  92. }
  93.  
  94.